package com.todo.ln.controller;

import com.todo.ln.entity.Goods;
import com.todo.ln.entity.Page;
import com.todo.ln.service.GoodsService;
import com.todo.ln.utils.RestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 1.@description:
 * 2.@author:ln
 * 3.@Date:2022/9/14
 */
@RestController
@RequestMapping("goods")  // 为每个模块添加一个前缀路径，保证各个模块路径的唯一性
public class GoodsController {
    @Autowired
    private GoodsService goodsService;
//    @RequestMapping("/goodsList")
//    public RestUtils adminList() {
//        return goodsService.goodsList();
//    }
    //统一请求路径处理
    @RequestMapping("{url}")
    public RestUtils goodsRequest(@PathVariable String url, Goods goods, Page page) {
        switch (url){
            // 商品信息列表 http://localhost:1314/goods/goodsList
            case "goodsList":
                return goodsService.goodsList();
                // 模糊查询商品 http://localhost:1314/goods/goodsListByLikeGoodsName?goodsName=团
            /*
            * 查询参数：goodsName=xxx
            * */
            case "goodsListByLikeGoodsName":
                return goodsService.goodsListByLikeGoodName(goods.getGoodsName());
                // 分页查询  http://localhost:1314/goods/goodsListByPage?current=3&rows=10
            /*
             * 查询参数：current=xxx&rows=xxx
             * */
            case "goodsListByPage" :
                return
                        goodsService.goodsListByPage(page.getCurrent(),page.getRows());
            // 添加商品 http://localhost:1314/goods/addGoods?goodsName=%E7%82%AB%E8%BF%88%E5%8F%A3%E9%A6%99%E7%B3%96&goodsPrice=19.00&goodsNumber=1000&goodsDescription=%E7%82%AB%E8%BF%88%E5%8F%A3%E9%A6%99%E7%B3%96%EF%BC%8C%E5%A5%BD%E5%90%83%E5%88%B0%E8%AE%A9%E4%BD%A0%E5%81%9C%E4%B8%8D%E4%B8%8B%E6%9D%A5&goodsWeight=10
            /*
             * 查询参数：goodsName=xxx&goodsPrice=xxx&goodsNumber=xxx&goodsWeight=xxx
             * 可以添加所有数据库字段数据，当未填写全部时，没有被添加的就会自动为null，除了设置有默认值或者自增的字段外
             * */
            case "addGoods":
                return goodsService.addGoods(goods);
            // 修改商品信息 http://localhost:1314/goods/updateGoods?goodsId=1&goodsName=Disney%E8%BF%AA%E5%A3%AB%E5%B0%BC%E8%81%94%E5%90%8D%E6%AC%BE%E8%93%9D%E7%89%99&goodsDescription=%E5%A5%B3%E7%A5%9E%E7%82%AB%E5%BD%A9%E7%B3%BB%E5%88%97%EF%BC%8C%E5%85%85%E8%B6%B3%E7%94%B5%E9%87%8F%EF%BC%8C%E6%8C%81%E4%B9%85%E7%BB%AD%E8%88%AA
            /*
             * 查询参数：goodsId=xxx&....数据库字段名称均可以作为参数进行修改
             * */
            case "updateGoods":
                return goodsService.updateGoods(goods);
            // 逻辑删除商品 http://localhost:1314/goods/delGoods?goodsId=5
            /*
             * 查询参数：goodsId=xxx 以商品goodsId作为标识将该条数据逻辑删除，并不会真正删除数据库中的数据，但是在查询商品信息时，goodsDeleted标记为1的数据将不会被查询到
             * */
            case "delGoods":
                return goodsService.delGoods(goods.getGoodsId());
        }
        return  null;


    }

}